package at.chl.lution;

import java.util.HashMap;
import java.util.List;

import at.chl.genetic.function.request.IGeneticFunctionRequest;
import at.chl.genetic.function.result.IGeneticFunctionResult;
import at.chl.genetic.random.IRandomDecisionNodeFactory;
import at.chl.lution.interpreter.IAccuracyInterpreter;

public interface ILutionRunner {
	
	public static final Long DEFAULT_POPULATION_SIZE = 100l;
	public static final Long DEFAULT_ROUNDS_LIMIT = 1250l;
	public static final Long DEFAULT_SURVIVER_COUNT = 50l;
	public static final Long DEFAULT_SLEEP_TIME = 2000l;

	public void setNodeFactory(IRandomDecisionNodeFactory nodeFactory);
	
	public void setPopulationSize(Long populationSize);
	
	public void setSurviverCount(Long surviverCount);
	
	public void setExpectionsMap(HashMap<IGeneticFunctionRequest, IGeneticFunctionResult> expectionsMap);
	
	public void setRoundsLimit(Long roundsLimit);
	
	public void runLution();
	
	public void setPopulation(List<ILutionist> population);
	
	public void setAccuracyInterpreter(IAccuracyInterpreter accuracyInterpreter);
	
	public void setSleepTime(Long sleepTime);
}
